css: Split out a common function
authorBenjamin Otte <otte@redhat.com>
Thu, 1 May 2014 17:47:58 +0000 (19:47 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 5 May 2014 13:48:02 +0000 (15:48 +0200)
It's used in two places already, and Iwant to use it in a third one.

gtk/gtkcssparser.c
gtk/gtkcssparserprivate.h
gtk/gtkcssstringvalue.c
gtk/gtkcssstylefuncs.c

index ab38fc9d93560a279dc025aeb925ff48b7c3c3f0..16505a320e738884299c0906ef1a1ad93c199a38 100644 (file)
@@ -1012,3 +1012,47 @@ _gtk_css_parser_resync (GtkCssParser *parser,
 
   gtk_css_parser_resync_internal (parser, sync_at_semicolon, TRUE, terminator);
 }
+
+void
+_gtk_css_print_string (GString    *str,
+                       const char *string)
+{
+  gsize len;
+
+  g_return_if_fail (str != NULL);
+  g_return_if_fail (string != NULL);
+
+  g_string_append_c (str, '"');
+
+  do {
+    len = strcspn (string, "\"\n\r\f");
+    g_string_append_len (str, string, len);
+    string += len;
+    switch (*string)
+      {
+      case '\0':
+        break;
+      case '\n':
+        g_string_append (str, "\\A ");
+        break;
+      case '\r':
+        g_string_append (str, "\\D ");
+        break;
+      case '\f':
+        g_string_append (str, "\\C ");
+        break;
+      case '\"':
+        g_string_append (str, "\\\"");
+        break;
+      case '\\':
+        g_string_append (str, "\\\\");
+        break;
+      default:
+        g_assert_not_reached ();
+        break;
+      }
+  } while (*string);
+
+  g_string_append_c (str, '"');
+}
+
index ea6a09c9d1603aa68456f5896c5c9159541259a5..5bc2ad691b1fdb3043cb62426cf0b89eecc22b89 100644 (file)
@@ -97,6 +97,11 @@ void            _gtk_css_parser_resync            (GtkCssParser          *parser
                                                    gboolean               sync_at_semicolon,
                                                    char                   terminator);
 
+/* XXX: Find better place to put it? */
+void            _gtk_css_print_string             (GString               *str,
+                                                   const char            *string);
+
+
 G_END_DECLS
 
 #endif /* __GTK_CSS_PARSER_PRIVATE_H__ */
index f97b512a0907e777e59528df7b0a1bdd5f3efe2f..11a893af8382ab69a0d2ccecccf0c5deef4fdf93 100644 (file)
@@ -65,47 +65,13 @@ static void
 gtk_css_value_string_print (const GtkCssValue *value,
                             GString           *str)
 {
-  char *string = value->string;
-  gsize len;
-
-  if (string == NULL)
+  if (value->string == NULL)
     {
       g_string_append (str, "none");
       return;
     }
 
-  g_string_append_c (str, '"');
-
-  do {
-    len = strcspn (string, "\"\n\r\f");
-    g_string_append_len (str, string, len);
-    string += len;
-    switch (*string)
-      {
-      case '\0':
-        break;
-      case '\n':
-        g_string_append (str, "\\A ");
-        break;
-      case '\r':
-        g_string_append (str, "\\D ");
-        break;
-      case '\f':
-        g_string_append (str, "\\C ");
-        break;
-      case '\"':
-        g_string_append (str, "\\\"");
-        break;
-      case '\\':
-        g_string_append (str, "\\\\");
-        break;
-      default:
-        g_assert_not_reached ();
-        break;
-      }
-  } while (*string);
-
-  g_string_append_c (str, '"');
+  _gtk_css_print_string (str, value->string);
 }
 
 static void
index 426d3ee1007cd3ca0037963a1c06a005c30a4bdd..9bb5406b310aecab7f977bd8aafef8a396ba7a37 100644 (file)
@@ -89,37 +89,7 @@ static void
 string_append_string (GString    *str,
                       const char *string)
 {
-  gsize len;
-
-  g_string_append_c (str, '"');
-
-  do {
-    len = strcspn (string, "\"\n\r\f");
-    g_string_append (str, string);
-    string += len;
-    switch (*string)
-      {
-      case '\0':
-        break;
-      case '\n':
-        g_string_append (str, "\\A ");
-        break;
-      case '\r':
-        g_string_append (str, "\\D ");
-        break;
-      case '\f':
-        g_string_append (str, "\\C ");
-        break;
-      case '\"':
-        g_string_append (str, "\\\"");
-        break;
-      default:
-        g_assert_not_reached ();
-        break;
-      }
-  } while (*string);
-
-  g_string_append_c (str, '"');
+  _gtk_css_print_string (str, string);
 }
 
 /*** IMPLEMENTATIONS ***/